#!/bin/bash

password="ht"

# 加载依赖库
echo "$password" | sudo -S ldconfig

# 1. 定义一个字典，用于存储有数字序号的文件路径列表
declare -A numbered_files_dict

# 2. 定义一个字典，用于存储普通无数字序号的文件路径列表
declare -A no_number_files_dict

# 3. 定义自启动路径的变量
auto_start_path=$HOME/AutoStart

# 4. 获取${auto_start_path}目录下的所有.sh/.py文件
files=$(ls ${auto_start_path}/*.sh ${auto_start_path}/*.py 2>/dev/null)

# 5. 遍历文件，提取文件名中的数字编号，数字编号格式 xxx_01.sh
for file in ${files}; do
    number=$(basename -- "$file" | sed 's/[^0-9]*//g')
    if [[ -n $number ]]; then
        # 如果数字已经存在于字典中，则将文件路径添加到列表中
        if [[ ${numbered_files_dict[${number}]+_} ]]; then
            numbered_files_dict[${number}]="${numbered_files_dict[${number}]} $file"
        else
            numbered_files_dict[${number}]=$file
        fi
    else
        # 如果文件名中没有数字，则将文件路径存储在 no_num 键下
        filename=$(basename -- "$file")
        no_number_files_dict["no_num_$filename"]=$file
    fi
done

# 6. 获取字典 numbered_files_dict 的所有key，并对key进行数字排序，有数字在最前面，无数字的key在最后面
numbered_keys=($(echo "${!numbered_files_dict[@]}" | tr ' ' '\n' | sort -n))

# 7. 遍历有数字序号的文件列表并依次启动
for key in ${numbered_keys[@]}; do
    file_path=${numbered_files_dict[$key]}
    # 如果文件列表不为空，则按顺序启动文件
    if [[ $file_path =~ " " ]]; then

        echo "Starting ${key} files..."
        for file in ${file_path}; do
            
            # 判断文件是否有执行权限，如果没有，则赋予执行权限
            if [[ ! -x "$file" ]]; then
                chmod +x "$file"
            fi

            echo "Starting ${file}..."
            ${file}
        done
    else
        echo "Starting ${file_path}..."
        # 判断文件是否有执行权限，如果没有，则赋予执行权限
        if [[ ! -x "$file_path" ]]; then
            chmod +x "$file_path"
        fi
        ${file_path}
    fi
done

# 8. 获取字典 no_number_files_dict 的所有key，并对key进行排序
# no_number_keys=($(echo "${!no_number_files_dict[@]}" | tr ' ' '\n' | sort))

# 9. 遍历普通无数字序号的文件列表并依次启动
# for key in ${no_number_keys[@]}; do
#     file_path=${no_number_files_dict[$key]}
#
#    # 判断文件是否有执行权限，如果没有，则赋予执行权限
#    if [[ ! -x "$file_path" ]]; then
#        chmod +x "$file_path"
#    fi
#    
#     echo "Starting ${file_path}..."
#     ${file_path}
# done

echo "All auto start files have been started ..."

